
/*
 * DiscPlanning.h
 *
 *  Created on: 12/09/2011
 *      Author: ${Petris-Normandia}
 */

#ifndef DISCPLANNING_H_
#define DISCPLANNING_H_

//librerias necesarias

#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdint.h>
#include <errno.h>
#include <semaphore.h>
#include <time.h>
#include <ctype.h>
#include <netinet/in.h>
#include <sys/un.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <pthread.h>
#include "epoll.h"
#include "sockLib.h"
#include "nipc.h"
#include "consola.h"
#include "socketsUnix.h"




//definicion de constantes
#define SECTORSIZE 512
#define PAGESIZE 4096
#define PATH_CONFIGURACION "archivodeconfiguracion.txt"
#define HEADS 1
#define LARGOPUERTO 10
#define MSXMIN 60000


//definicion de estructuras

typedef struct {
	int16_t cylinder;
	int16_t sector;
	uint8_t modo;
	void* content;
	int socket;
	uint32_t ped_log;


}tregCHS;

typedef struct {
	int16_t cylinder;
	int16_t sector;

}tregPosInicio;




typedef struct{
	char* modoInicio;
	struct in_addr IP;
	int16_t port;
	char* algoritmo;
	char*  pathSocketUnix;
	int16_t log;
	int16_t IDdisk;
	int16_t diskCylinders;
	int16_t diskSectors;
	tregPosInicio posinicial;
	int16_t readTime;
	int16_t writeTime;
	int16_t RPM;
	int16_t seekTime;
}Parametros;

struct nodo
   {
      tregCHS info;
      struct nodo *sigu;
  }typedef   nodo;

//definicion de variables globales
Parametros* parametros;
float sectorTime;
int descriptorSocketUnix;



//encabezados de funciones

void mostrarRecorrido(tregPosInicio*,tregPosInicio,int16_t*,int16_t*);
void comandear(char*,char**);
void leeSocket(int);
int handshake(int);
void tratarmsj(T_MENSAJE*,tregCHS);
int16_t leerConfig(char *,Parametros*);
int16_t cargarParametros(Parametros*, char *, char *);







#endif /* DISCPLANNING_H_ */
